﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace ArmoryData.Character
{
    /// <summary>
    /// An <see cref="Exception"/> thrown when a <see cref="CharacterInfo"/> is not found.
    /// </summary>
    [Serializable]
    public class CharacterNotFoundException : Exception
    {
        static string defaultMessage = "This character profile is currently unavailable, due to a long period of inactivity or as a result of high server load.";

        /// <summary>
        /// Initializes a new instance of the <see cref="CharacterNotFoundException"/> class.
        /// </summary>
        public CharacterNotFoundException() : base(defaultMessage) { }

        /// <summary>
        /// Initializes a new instance of the <see cref="CharacterNotFoundException"/> class.
        /// </summary>
        /// <param name="message">The message.</param>
        public CharacterNotFoundException(string message) : base(message) { }

        /// <summary>
        /// Initializes a new instance of the <see cref="CharacterNotFoundException"/> class.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="innerException">The inner exception.</param>
        public CharacterNotFoundException(string message, Exception innerException) : base(message, innerException) { }

        /// <summary>
        /// Initializes a new instance of the <see cref="CharacterNotFoundException"/> class.
        /// </summary>
        /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown.</param>
        /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
        /// <exception cref="T:System.ArgumentNullException">The <paramref name="info"/> parameter is null. </exception>
        /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"/> is zero (0). </exception>
       // protected CharacterNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) { }
    }
}
